home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: New Zealand Amiga Users Group
/
New Zealand Amiga Users Group Newsdisk v25 (1989-08)(NZAmigaUG).zip
/
New Zealand Amiga Users Group Newsdisk v25 (1989-08)(NZAmigaUG).adf
/
Lotto
/
lotto
< prev
next >
Wrap
Text File
|
1993-12-03
|
6KB
|
212 lines
lotto:
DEFINT a-z
lowdensity=17:ldensity=0
GOSUB week:wk=7*week+1:setp=0:lweek=week
DIM ns(wk+7):DIM ldn(wk+7):DIM hit(40):DIM rc(80):DIM denos(80)
IF upd=1 THEN update
GOSUB getdata:GOSUB getdenos
options:LOCATE 3,1:COLOR 1
PRINT "2.read lotto numbers 3.quit 4.main"
PRINT "5.graph 6.main-set ratio"
INPUT "enter option required";opt
IF opt=2 THEN reads
IF opt=3 THEN quit
IF opt=4 THEN density
IF opt=5 THEN dgraph
IF opt=6 THEN density1
GOTO options
week:upd=0
OPEN "nos" AS 1 LEN=2:FIELD 1,2 AS p$
GET #1,1:PRINT "current week number is";CVI(p$)
INPUT "hit return or enter new week number";week
IF week=0 THEN week=CVI(p$):CLOSE #1:RETURN
upd=1
LSET p$=MKI$(week):PUT #1,1:CLOSE #1:RETURN
update:
GOSUB getdenos
OPEN "nos" AS 1 LEN=2:FIELD 1,2 AS p$
OPEN "denos" AS 2 LEN=2:FIELD 2,2 AS q$
FOR x=1 TO 40:denos(x)=denos(x+40):NEXT
FOR i=week*7-5 TO week*7+1
PRINT "enter number ";i-week*7+6;:INPUT;n:PRINT
denos(n+40)=(denos(n)+1)
LSET p$=MKI$(n):PUT #1,i:NEXT:CLOSE #1
FOR x=1 TO 80:LSET q$=MKI$(denos(x)):PUT #2,x:NEXT
CLOSE #2:END
reads:
INPUT "enter week number to read";w
OPEN "nos" AS 1 LEN=2:FIELD 1,2 AS p$
FOR i=w*7-5 TO w*7+1
GET #1,i:n=CVI(p$):PRINT n;:NEXT:CLOSE #1: GOTO options
quit:END
density1:
INPUT "enter ratio default=17";ldensity
IF ldensity<>0 THEN lowdensity=ldensity
density:
INPUT "enter draw no required";week:CLS:wk=(week*7)-1
LOCATE 1,1:PRINT "data to draw";week
LOCATE 1,46:PRINT "draw";week+1
IF week>lweek-2 THEN GOTO mark1
tden=0:FOR n=1 TO 40
d=0:FOR i=2 TO (week*7)+1
IF ns(i)=n THEN d=d+1
NEXT:ldn(n)=d:tden=tden+d
col=1:l=n
IF n>20 THEN
col=10:l=n-20
END IF
LOCATE l+1,col:PRINT USING "####";n;d:NEXT
GOTO mark2
mark1:tden=0
IF lweek=week THEN sn=40
IF lweek>week THEN sn=0
FOR n=1 TO 40
ldn(n)=denos(n+sn):tden=tden+ldn(n)
col=1:l=n
IF n>20 THEN
col=10:l=n-20
END IF
LOCATE l+1,col:PRINT USING "####";n;ldn(n):NEXT
mark2:
PRINT "total average density=";tden/40
lowden=1000:highden=1:FOR n=1 TO 40
IF ldn(n)<=lowden THEN
lowden=ldn(n):ld=n
END IF
IF ldn(n)>=highden THEN
highden=ldn(n):hn=n
END IF
NEXT:x=2:hn=1:FOR n=1 TO 40
x1=x:y=22
IF x>21 THEN
x1=x-20:y=33
END IF
IF ldn(n)<10*(lowden+highden)/lowdensity THEN
GOSUB changecolor:hit(hn)=n:hn=hn+1
LOCATE x1,y:PRINT USING "####";n;ldn(n):x=x+1
END IF
COLOR 1:NEXT
avden=0
FOR w=1 TO 7
avden=avden+ldn(ns((week*7)+1+w))
i=wk
WHILE ns((week*7)+1+w)<>ns(i)
i=i-1
WEND
IF w=7 THEN COLOR 3
LOCATE w+1,44:PRINT USING "####";ns((week*7)+1+w);ldn(ns((week*7)+1+w)):NEXT:COLOR 1
LOCATE w+1,44:PRINT "current average density=";avden/7
morerand:
li=10:LOCATE 10,44:PRINT "random selection":rc=1
FOR p=1 TO 60
COLOR 1
IF p MOD 6=1 THEN
li=li+1:LOCATE li,44
END IF
GOSUB random
GOSUB changecolor1:PRINT USING "####";hit(r);:NEXT:COLOR 1
LOCATE 1,59:PRINT "total selected";(hn-1)
LOCATE 2,59:PRINT "ratio=";lowdensity
LOCATE 1,22:PRINT " selected numbers"
REM LOCATE 3,59:PRINT "last =";lastpicked
GOSUB wait2
GOTO options
dgraph:CLS
FOR x=1 TO 8
LOCATE 20-2*x,1:PRINT USING "##";x*5:NEXT
FOR x=18 TO 650 STEP 6
LINE(x,30)-(x,150):NEXT
FOR x=0 TO 40:s=20
COLOR 0:IF x MOD 5<2 THEN COLOR 2
IF x MOD 5<2 THEN s=20
xx=30+3*x:LINE(s,xx)-(650,xx):NEXT
firstweek=week-99:fw=1
IF firstweek<1 THEN firstweek=1
FOR w=firstweek TO week
FOR i=w*7-5 TO w*7+1
FOR n=1 TO 40
IF ns(i)=n THEN LINE(13+6*fw,152-3*n)-(16+6*fw,151-3*n),3,BF
NEXT:NEXT:fw=fw+1:NEXT:z=0:COLOR 1
LOCATE 20,64:PRINT "last draw";week
LOCATE 20,1:PRINT "first draw";firstweek
GOSUB wait1
getdata:
OPEN "nos" AS 1 LEN=2:FIELD 1,2 AS p$
FOR i=2 TO (week*7)+1
GET #1,i:ns(i)=CVI(p$):NEXT:CLOSE #1:RETURN
getdenos:
OPEN "denos" AS 2 LEN=2:FIELD 2,2 AS q$
FOR x=1 TO 80
GET #2,x:denos(x)=CVI(q$):NEXT:CLOSE #2:RETURN
wait1:a$="":a$=INKEY$
IF a$<>"" THEN options
GOTO wait1:RETURN
wait2:a$="":a$=INKEY$
IF a$="l" THEN printselect
IF a$="p" THEN prob
IF a$="m" THEN morerand
IF a$<>"" THEN options
GOTO wait2:RETURN
changecolor:
FOR ii=(week*7)+2 TO (week*7)+8
IF n=ns(ii) THEN COLOR 3
NEXT:RETURN
changecolor1:
FOR ii=(week*7)+2 TO (week*7)+8
IF hit(r)=ns(ii) THEN COLOR 3:rhit=rhit+1
NEXT:RETURN
fillhit:
FOR h=1 TO hn-1
IF n=hit(h) THEN ret1
NEXT:hit(hn)=n:hn=hn+1
ret1:RETURN
random:
RANDOMIZE TIMER
r=1+INT(RND*(hn-1))
chr=rc-6:IF chr<1 THEN chr=1
FOR a=chr TO rc
IF r=rc(a) THEN random
NEXT:rc=rc+1:rc(rc)=r
RETURN
prob:
LOCATE 21,35:INPUT "enter no of 10's to test";ten
LINE(265,160)-(600,184),0,BF
LOCATE 21,34:PRINT " no one two three four five six"
four=0:five=0:six=0:one=0:two=0:three=0
FOR b=1 TO ten*10
rhit=0:FOR c=1 TO 6
IF rc>60 THEN rc=1
GOSUB random:GOSUB changecolor1:NEXT
LOCATE 22,34:PRINT b
IF rhit=1 THEN one=one+1:LOCATE 22,41:PRINT one
IF rhit=2 THEN two=two+1:LOCATE 22,47:PRINT two
IF rhit=3 THEN three=three+1:LOCATE 22,53:PRINT three
IF rhit=4 THEN four=four+1:LOCATE 22,59:PRINT four
IF rhit=5 THEN five=five+1:LOCATE 22,65:PRINT five
IF rhit=6 THEN six=six+1:LOCATE 22,71:PRINT six
NEXT
GOTO wait2
printselect:
LOCATE 2,4:COLOR 3:INPUT "TURN ON PRINTER hit return";anyon:COLOR 1
OPEN "prt:" FOR OUTPUT AS #1 LEN=1
PRINT #1,(hn-1);"selected numbers for lotto draw";week+1;"density=";lowdensity
FOR pn=1 TO 9
PRINT #1,CHR$(9);hit(pn);
NEXT:PRINT #1,CHR$(27);"e"
FOR pn=10 TO 18
IF pn>hn THEN nomore
PRINT #1,CHR$(9);hit(pn);
NEXT:PRINT #1,CHR$(27);"e"
FOR pn=19 TO 27
IF pn>hn THEN nomore
PRINT #1,CHR$(9);hit(pn);
NEXT:PRINT #1,CHR$(27);"e"
FOR pn=28 TO 36
IF pn>hn THEN nomore
PRINT #1,CHR$(9);hit(pn);
NEXT:PRINT #1,CHR$(27);"e"
nomore:CLOSE #1:RETURN